#！/usr/bin/python 
# -*- coding:utf-8 -*-  
# @Time: 2019/5/26 15:53   
# @Author: Envy   
# @File: paginator_test.py

# 注意，以下代码必须在shell命令下运行
# python manage.py shell

# 导入内置的分页功能模块
from django.core.paginator import Paginator

# 分页对象p,由模块Paginator实例化生成。
# 某分页对象page2，由对象p使用函数page所生成的对象。

# 生成数据列表
objects = [chr(x) for x in range(97, 107)]
# 输出数据列表
print(objects)
# 结果['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']

# 将数据列表以每三个元素分为一页
# Paginator类的init方法(self, object_list, per_page, orphans=0,allow_empty_first_page=True)
p = Paginator(object_list=objects, per_page=3)
# 输出全部数据，即整个数据列表
print(p.object_list)
# 结果['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']

# 获取数据列表的长度
print(p.count)
# 分页后的总页数
print(p.num_pages)
# 将页数转换成range循环对象
print(p.page_range)
# 结果range(1, 5)

# 获取第二页的数据信息
page2 =p.page(2)
# 判断第二页是否存在上一页
print(page2.has_previous())
# 如果当前页数存在上一页，就输出上一页的页数，否则就抛出EmptyPage异常
print(page2.previous_page_number())
# 判断第二页是否还存在下一页
print(page2.has_next())
# 如果当前页数存在上一页，就输出上一页的页数，否则就抛出EmptyPage异常
print(page2.next_page_number())
# 输出第二页所对应的数据内容
print(page2.object_list)
# 输出第二页的第一条数据在整个数据列表中的位置，数据位置从1开始计算
print(page2.start_index())
# 输出第二页的最后一条数据在整个数据列表中的位置，数据位置从1开始计算
print(page2.end_index())
